package glpm

import (
	"context"
)

// PacmanManager Pacman包管理器实现
type PacmanManager struct {
	*BaseManager
}

// NewPacmanManager 创建Pacman包管理器
func NewPacmanManager(config *ManagerConfig) *PacmanManager {
	base := NewBaseManager("pacman", config)
	return &PacmanManager{
		BaseManager: base,
	}
}

// Install 安装包
func (pm *PacmanManager) Install(ctx context.Context, packages []string) error {
	return pm.DefaultInstall(ctx, packages)
}

// Remove 移除包
func (pm *PacmanManager) Remove(ctx context.Context, packages []string) error {
	return pm.DefaultRemove(ctx, packages)
}

// Update 更新包列表
func (pm *PacmanManager) Update(ctx context.Context) error {
	return pm.DefaultUpdate(ctx)
}

// Upgrade 升级包
func (pm *PacmanManager) Upgrade(ctx context.Context, packages []string) error {
	return pm.DefaultUpgrade(ctx, packages)
}

// Search 搜索包
func (pm *PacmanManager) Search(ctx context.Context, pattern string) ([]PackageInfo, error) {
	return pm.DefaultSearch(ctx, pattern)
}

// Info 获取包信息
func (pm *PacmanManager) Info(ctx context.Context, packageName string) (*PackageInfo, error) {
	return pm.DefaultInfo(ctx, packageName)
}

// ListInstalled 列出已安装的包
func (pm *PacmanManager) ListInstalled(ctx context.Context) ([]PackageInfo, error) {
	return pm.DefaultListInstalled(ctx)
}

// IsInstalled 检查指定包是否已安装
func (pm *PacmanManager) IsInstalled(ctx context.Context, packageName string) (bool, error) {
	return pm.DefaultIsInstalled(ctx, packageName)
}